package com.atguigu.tingshu.account.mapper;

import com.atguigu.tingshu.model.account.UserAccount;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

import java.math.BigDecimal;

/**
 * @author Petrichor
 */
@Mapper
public interface UserAccountMapper extends BaseMapper<UserAccount> {
    /**
     * 查询当前用户id 且 可用金额大于amount的数据
     * @author Petrichor
     * @date 2024/1/8 20:07
     * @param userId 用户id
     * @param amount 可用余额
     * @return 满足条件的 用户余额对象
    **/
    UserAccount check(Long userId, BigDecimal amount);
    /**
     * 锁定用户金额
     * @author Petrichor
     * @date 2024/1/8 20:15
     * @param userId 用户id
     * @param amount 可用余额
     * @return 影响条数
    **/
    int lock(Long userId, BigDecimal amount);
    /**
     * 根据userId[用户id] 给把锁定金额清空,账户总金额减少.总输出增加
     * @author Petrichor
     * @date 2024/1/9 19:50
     * @param userId 用户id
     * @param amount 锁定金额
     * @return 影响行数
    **/
    int minus(Long userId, BigDecimal amount);
    /**
     * 根据userId[用户id] 给把锁定金额清空,账户总金额增加.可用金额增加
     * @author Petrichor
     * @date 2024/1/9 19:50
     * @param userId 用户id
     * @param amount 解锁金额
     * @return 影响行数
     **/
    int unlock(Long userId, BigDecimal amount);
    /**
     * @description: 充值
     * @author Petrichor
     * @date 2024/1/11 11:37
     * @param userId 用户id
     * @param amount 充值金额
    **/
    void add(Long userId, BigDecimal amount);
}
